package w83b.w83bOperacionesPaso.w83bCitaciones;


import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import w83b.w83bBeans.W83bCitacionBean;
import w83b.w83bBeans.W83bPlantillasBean;
import w83b.w83bUtilidades.W83bUtilidadesCitaciones;
import w83b.w83bUtilidades.W83bUtilidadesRTF;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

public class W83bEtiquetasCitacionAction extends Q70ActionPasoOP{


	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
		ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
			HashMap txtMuniProv=(HashMap)contexto.get("w83bMapResultadosBean");
				 
			HashMap plantillas=(HashMap)contexto.get("w83bPlantillasMap");
			W83bPlantillasBean plantilla=(W83bPlantillasBean)plantillas.get(W83bClsConstantes.ETIQUETAS.toUpperCase());
				
			HashMap mapaPar = new HashMap();
			W83bCitacionBean citacion=(W83bCitacionBean)contexto.get("w83bCitacionDetalleBean");
			 String idioma = (String)contexto.get(W83bClsConstantes.CONSTANTE_CONTEXTO_IDIOMA);
	       
	   //se rellenan los datos que se van a repetir continuamente para no tener que rellenar por cada elemento
		
			
			mapaPar.put("<<EXPDTE>>",citacion.getNacta().substring(1,citacion.getNacta().length()));
		
			mapaPar.put("<<finrep>>","");
			mapaPar.put("<<iniciorep>>","");
			CharSequence content=W83bUtilidadesRTF.leerTodoFichero(plantilla.getFichero());
			
			String contenido=content.toString();
			
			
			//calculo de coger el trozo que nos interesa repetir
			
			/*la idea es coger el contenido anterior al trozo a repetir le llamaremos "PREV" 
			/* el trozo a repetri "TROZO"
			 * y la parte trasera del contenido "POST"
			 * 
			 * Nuestro contenido final contentra "PREV" + n veces TROZO + "POST"
			 */
			StringBuffer contenidoBuffer=new StringBuffer(contenido);
			
			int a=contenidoBuffer.indexOf("<<iniciorep>>");
			int b=contenidoBuffer.indexOf("<<finrep>>");
			
			String parteDelante=contenido.substring(0,a);
			String parteDetras=contenido.substring(b,contenido.length());
			int inicio=parteDelante.lastIndexOf("}")+1;
			int fin=parteDetras.indexOf("}")+1+b;
			String parteDelanteL=contenido.substring(0,inicio);
			String parteAtrasL=contenido.substring(fin,contenido.length());
			contenidoBuffer=new StringBuffer(contenidoBuffer.substring(a,fin));
			
			
		String saltos="\r\n\\par \r\n\\par \r\n\\par \r\n\\par \r\n\\par ";
		int inicioSaltos=contenidoBuffer.indexOf(saltos);
		StringBuffer contenidoBufferCorto=new StringBuffer(contenidoBuffer.toString());
		contenidoBufferCorto.replace(inicioSaltos,inicioSaltos+saltos.length(),"\r\n\\par \r\n\\par ");
		StringBuffer datos=new StringBuffer();
		// se aņade la parte delantera del documento.
		
		datos.append(parteDelanteL);
		
		//Se van a aniadir N elementos, que corresponden a las partes afectadas de la citacion
		int numElem=1;
		datos=W83bUtilidadesCitaciones.elementoCentroTrabajoMesaImpugnante(7,citacion,datos,contenidoBuffer,contenidoBufferCorto,mapaPar,numElem,idioma);
		//por el centro
		numElem++;
		if(citacion.getMesa().equals(W83bClsConstantes.CONSTANTE_VALIDADA))
		{numElem++;}
		if(StringUtils.isNotEmpty(citacion.getDniImpug()))
		{numElem++;}
		datos=W83bUtilidadesCitaciones.elementoSindicatos(7,citacion,datos,contenidoBuffer,contenidoBufferCorto,mapaPar,numElem,txtMuniProv);
		
		//para cerrar el contenido del documento metemos la parte trasera.
		datos.append(parteAtrasL);
		
        response.setContentType("application/msword");
        response.setContentLength(datos.toString().getBytes().length);
        response.setHeader("Content-disposition","attachment;filename="+plantilla.getNombrePlantilla().replaceAll("[.]","CITACION."));
        response.getOutputStream().write(datos.toString().getBytes());
        response.getOutputStream().flush();

		
		return null;
	}
	
		
}

